package cn.itcast.shop.product.service;

import java.util.List;

import org.springframework.transaction.annotation.Transactional;

import cn.itcast.shop.product.dao.ProductDao;
import cn.itcast.shop.product.vo.Product;
import cn.itcast.shop.utils.PageBean;

@Transactional
public class ProductService {
	
	private ProductDao productDao;

	public void setProductDao(ProductDao productDao) {
		this.productDao = productDao;
	}

	public List<Product> findHot() { 
		return productDao.findHot();
	}

	public List<Product> findNew() {
		return productDao.findNew();
	}

	/**
	 * 根据商品的ID进行查询商品详细信息
	 * @param pid
	 * @return
	 */
	public Product findByPid(Integer pid) {
		return productDao.findByPid(pid);
	}
	
	/**
	 * 根据一级分类的cid带有分页查询商品
	 * @param cid
	 * @param page
	 * @return
	 */
	public PageBean<Product> findByPageCid(Integer cid, int page) {
		PageBean<Product> pageBean = new PageBean<Product>();
		pageBean.setPage(page);
		//设置每页显示记录数：
		int limit = 8;
		pageBean.setLimit(limit);
		//设置总记录数：
		int totalCount=0;
		totalCount = productDao.findCountCid(cid);
		pageBean.setTotalCount(totalCount);
		List<Product> list = productDao.findByPageCid(cid, pageBean.getBegin(),limit);
		pageBean.setList(list);
		return pageBean;
	}

	/**
	 * 根据二级分类的csid带有分页查询商品
	 * @param csid
	 * @param page
	 * @return
	 */
	public PageBean<Product> findByPageCsid(int csid, int page) {
		PageBean<Product> pageBean = new PageBean<Product>();
		pageBean.setPage(page);
		//设置每页显示记录数：
		int limit = 8;
		pageBean.setLimit(limit);
		//设置总记录数：
		int totalCount=0;
		totalCount = productDao.findCountCsid(csid);
		pageBean.setTotalCount(totalCount);
		List<Product> list = productDao.findByPageCsid(csid, pageBean.getBegin(),limit);
		pageBean.setList(list);
		return pageBean;
	}

	public PageBean<Product> findByPage(int page) {
		PageBean<Product> pageBean = new PageBean<Product>();
		pageBean.setPage(page);
		//设置每页显示记录数：
		int limit = 10;
		pageBean.setLimit(limit);
		//设置总记录数：
		int totalCount=0;
		totalCount = productDao.findCount();
		pageBean.setTotalCount(totalCount);
		List<Product> list = productDao.findByPage(pageBean.getBegin(),limit);
		pageBean.setList(list);
		
		return pageBean;
	}

	public void save(Product product) {
		productDao.save(product);
	}

	/**
	 * 业务层删除商品的方法
	 * @param product
	 */
	public void delete(Product product) {
		productDao.delete(product);
	}

	public void update(Product product) {
		productDao.update(product);
	}
	
	
}
